var u = navigator.userAgent,
  app = navigator.appVersion;
var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1;
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
var isWechat = u.match(/(MicroMessenger)/i);
/*特别注意：1这个JS必须要等页面load完后调用，callHandler方法还没注册上去调用的话会找不到该方法
           2 如果是Vue调用的话自己在方法全面添加export,不然引用不到*/
/**
 * 1 该方法是判断是否手机银行是否登陆，没有登陆去登陆返回token，2 退出第三方页面方法也可以用做其他再定义功能
 * @param params {“method”：“getToken”,“merchantId”：“584703050941285”}
 *{“method”：“quit”,“nextStage”：“”} 退出，nextStage退出后跳的场景，如果不填的话默认回到开始的点击页面
 *{“method”：“getLocalToken”,“nextStage”：“”} 获取本地存储的商户token，主要解决同步退出问题
 *{“method”：“callPhone”,“phone”：“15820451123”} 打电话
 * @param callback
 */
function nativeFunc(params, callback) {
  if (isAndroid) {
    window.WebViewJavascriptBridge.callHandler("nativeFunc", params, function(
      responseData
    ) {
      if (callback) {
        callback(responseData);
      }
    });
  }
  if (isIOS) {
    WebViewJavascriptBridge.callHandler("LocationFunction", params, function(
      dataFromOC
    ) {
      if (callback) {
        callback(dataFromOC);
      }
    });
  }
}

/**
 * 身份证识别
 * @param params {“ocrFlag”：“1”} 0 是背面 1 是正面
 * @param callback
 */
function idCardOcr(params, callback) {
  if (isAndroid) {
    window.WebViewJavascriptBridge.callHandler("idCardOcr", params, function(
      responseData
    ) {
      if (callback) {
        callback(responseData);
      }
    });
  }
  if (isIOS) {
    WebViewJavascriptBridge.callHandler("idCardOcr", params, function(
      dataFromOC
    ) {
      if (callback) {
        callback(dataFromOC);
      }
    });
  }
}

/**
 * 银行卡识别
 * @param params 传null
 * @param callback
 */
function bankCardOcr(params, callback) {
  if (isAndroid) {
    window.WebViewJavascriptBridge.callHandler("bankCardOcr", {}, function(
      responseData
    ) {
      if (callback) {
        callback(responseData);
      }
    });
  }
  if (isIOS) {
    WebViewJavascriptBridge.callHandler("bankCardOcr", {}, function(
      dataFromOC
    ) {
      if (callback) {
        callback(dataFromOC);
      }
    });
  }
}

/**
 * 获取定位信息
 * @param params 传null
 * @param callback
 */
function getLocation(params, callback) {
  if (isAndroid) {
    window.WebViewJavascriptBridge.callHandler("getLocation", {}, function(
      responseData
    ) {
      if (callback) {
        callback(responseData);
      }
    });
  }
  if (isIOS) {
    WebViewJavascriptBridge.callHandler("getLocation", {}, function(
      dataFromOC
    ) {
      if (callback) {
        callback(dataFromOC);
      }
    });
  }
}

/**
 * 人脸识别
 * @param params 传null
 * @param callback FileDataOne 人脸图片信息 LivenessData 活体检测数据
 */
function goface(params, callback) {
  if (isAndroid) {
    window.WebViewJavascriptBridge.callHandler(
      "goface",
      { liveCount: 3 },
      function(responseData) {
        if (callback) {
          callback(responseData);
        }
      }
    );
  }

  if (isIOS) {
    WebViewJavascriptBridge.callHandler("goface", params, function(dataFromOC) {
      if (callback) {
        callback(dataFromOC);
      }
    });
  }
}

/**
 * 分享
 * @param params
 * @param callback
 */
function shareUrl(params, callback) {
  if (isAndroid) {
    window.WebViewJavascriptBridge.callHandler("shareUrl", params, function(
      responseData
    ) {
      if (callback) {
        callback(responseData);
      }
    });
  }
  if (isIOS) {
    WebViewJavascriptBridge.callHandler("shareUrl", params, function(
      dataFromOC
    ) {
      if (callback) {
        callback(dataFromOC);
      }
    });
  }
}

//Ios JSBridge
// function setupWebViewJavascriptBridge(callback) {
//   if (window.WebViewJavascriptBridge) {
//     return callback(WebViewJavascriptBridge);
//   }
//   if (isIOS && !isWechat) {
//     if (window.WVJBCallbacks) {
//       return window.WVJBCallbacks.push(callback);
//     }
//     window.WVJBCallbacks = [callback];
//     var WVJBIframe = document.createElement("iframe");
//     WVJBIframe.style.display = "none";
//     WVJBIframe.src = "https://__bridge_loaded__";
//     document.documentElement.appendChild(WVJBIframe);
//     setTimeout(function() {
//       document.documentElement.removeChild(WVJBIframe);
//     }, 0);
//   }

//   if (isAndroid && !isWechat) {
//     document.addEventListener(
//       "WebViewJavascriptBridgeReady",
//       function() {
//         callback(WebViewJavascriptBridge);
//       },
//       false
//     );
//   }
// }

// setupWebViewJavascriptBridge(function(bridge) {
//   if (isIOS && !isWechat) {
//     bridge.registerHandler("testJavascriptHandler", function(
//       data,
//       responseCallback
//     ) {
//       var responseData = { "Javascript Says": "Right back atcha!" };
//       responseCallback(responseData);
//     });
//   } else if (isAndroid && !isWechat) {
//     bridge.init(function(message, responseCallback) {
//       var data = {
//         "Javascript Responds": "Wee!"
//       };
//       responseCallback(data);
//     });
//   }
// });

/**
 * android jsbridge
 */
function connectWebViewJavascriptBridge(callback) {
  if (window.WebViewJavascriptBridge) {
    callback(WebViewJavascriptBridge);
  } else {
    if (isAndroid) {
      document.addEventListener(
        "WebViewJavascriptBridgeReady",
        function() {
          callback(WebViewJavascriptBridge);
        },
        false
      );
    }
  }
}

/**
 * 获取设备信息
 * @returns
 */
function getDeviceType() {
  if (isAndroid && !isWechat) {
    return "android";
  }
  if (isIOS && !isWechat) {
    return "ios";
  }
  if (isWechat) {
    return "wechat";
  }
}

export default {
  getDeviceType,
  nativeFunc,
  idCardOcr,
  bankCardOcr,
  getLocation,
  goface,
  shareUrl
};
